package com.mephi.oshs.view.api;

import java.util.List;

/**
 * Данный класс предоставляет доступ к различным объектам представлений.
 */
public interface IViewManager {

    /**
     * Получить все зарегистрированные в системе объекты представлений.
     *
     * @return Список всех зарегистрированных представлений. Не может быть равен null.
     */
    public List<IView> getAllViews();

    /**
     * Зарегистрировать новый объект представления.
     *
     * @param view Объект представления, не может быть равен null.
     */
    public void registerView(final IView view);

    /**
     * Удалить регистрацию объекта представления.
     * Объект представления должен был быть зарегистрирован ранее.
     *
     * @param view Объект представления, зарегистрированный ранее, не может быть равен null.
     */
    public void unRegisterView(final IView view);

    /**
     * Получить представление по его ID.
     * Объект представления должен был быть зарегистрирован ранее.
     *
     * @param viewId Идентификатор представления.
     * @return Объект представления.
     */
    public IView getViewById(final ViewId viewId);
}
